<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // const:常量：不变的量；
        // Math.PI
        // const a = 10;
        // console.log(a);
        // 1.常量和变量最大的区别：常量不能改变；
        // 不能重复声明 
        // const a = 10;
        // const a = 20;
        // 不能被重新赋值；
        // const a = 10;
        // a = 20;

        // 2.没有变量提升 hosting
       
        // const a = 10;
        // console.log(a);
        // 3.块级作用域
        // {
        //     const a = 10;
        //     console.log(a)
        // }
        // console.log(a);

        // 一般情况下 常量 约定俗成 会大写
        // const PI = 3.1415926;
        // const pi = 242342;
        // 4.不会和window绑定
        // const a = 10;
        // console.log(window.a);


        // const ele = document.querySelector

        // 5.const 定义对象；
        // const obj = {
        //     name:"张三",
        //     age:20
        // }

        // // 覆盖式
        // // obj = {
        // //     name:"李四"
        // // }

        // obj.name = "李四";
        // console.log(obj);

        // 不可变对象；
        // 冻结 对象 
        // let obj = {
        //     name:"张三",
        //     age:20,
        //     hobby:{
        //         one:"篮球",
        //         two:"足球"
        //     }
        // }
        // // 冻结对象； Object.freeze只能冻结一层对象；
        // Object.freeze(obj);
        // // obj.name = "李四";
        // obj.hobby.one = "乒乓球";
        // console.log(obj);


        // 深冻结 
        function deepFreeze(obj){
            Object.freeze(obj);
            for(let key in obj){
                if(typeof obj[key]==="object"){
                    deepFreeze(obj[key]);
                }
            }
        }

        let obj = {
            name:"张三",
            age:20,
            hobby:{
                one:"篮球",
                two:"足球"
            }
        }
        deepFreeze(obj);
        obj.hobby.one = "乒乓球";
        console.log(obj);



    </script>
</body>
</html>